<?php
/*
 * 
 *  nginx   集成包  lnmp  http://lnmp.org/faq.html
 *  
 *  
 *  ???????????????????  虚拟目录配置配置多个不成功  原因不明
 *  
 *  
 *  
 *  1. 基础
		
		a） 启动  /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf  
		
			如果是默认路径 可以直接  /usr/local/nginx/sbin/nginx 启动
		
		b） 停止  /usr/local/nginx/sbin/nginx -s stop
		
		c）  重启 /usr/local/nginx/sbin/nginx -s reload  
		
			// 可能会杀掉nginx.pid，需要使用上面的启动命令
			所以可以先停止 在启动 
			 
		
		d) 重载配置检查   /usr/local/nginx/sbin/nginx -t
			
			检查无误后重启比较好
			
			
		
		虚拟目录在配置文件中查看
		
	2. 虚拟目录配置
	
		a) 删除nginx.conf中的server配置
		b) 加入配置 include vhost/*.conf;
		c) 在同目录下创建  vhost文件夹
		d) 在vhost下创建各个虚拟目录的配置文件 
			如  vhosts_4318.conf
			
			server
			{
				listen       80;
				server_name 4318.com;
				index index.html index.htm index.php;
				root  /data/www/4318;
		
				location ~ .*\.(php|php5)?$
					{
						try_files $uri =404;
						fastcgi_pass  unix:/tmp/php-cgi.sock;
						fastcgi_index index.php;
						include fcgi.conf;
					}
		
				location /status {
					stub_status on;
					access_log   off;
				}
		
				location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
					{
						expires      30d;
					}
		
				location ~ .*\.(js|css)?$
					{
						expires      12h;
					}
		
				access_log  /data/logs/access.4318.log  access;
			}
	
	
	
	
	
	
	

出错

1 nginx.pid找不到

	  重启命令可能删除掉这个文件，可以通过启动命令重新生成这个文件
		
		
		
			
			
		
			
			
			自定义二级域名的需求
将http://guides.network.com 的请求转至 http://www.network.com/guides 而且域名保持不变

nginx配置代码
server {
        server_name  *.network.com;        
        
        if ( $http_host ~* "^(.*?)\.network\.com$")
        {
            set $domain $1;              
        }
        
        location / {            
            proxy_pass   http://network;
            
            if ($domain !~* ^www$)
            {
                rewrite ^/(.*)    /$domain/$1 break;
            }                         
            
            proxy_set_header Host $host:80;
            proxy_set_header X_Forwarded_For $remote_addr;
            index  index.html index.htm;
        }

}
		


http://onlyzq.blog.51cto.com/1228/535279
		
		
		
		
关于Nginx的server_name。
2011-04-04 23:01:42
标签：Nginx linux server_name 休闲 onlyzq
原创作品，允许转载，转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://onlyzq.blog.51cto.com/1228/535279

Nginx中的server_name指令主要用于配置基于名称的虚拟主机，server_name指令在接到请求后的匹配顺序分别为：

1、准确的server_name匹配，例如：

 

server {
     listen       80;
     server_name  domain.com  www.domain.com;
     ...
}

 

 

2、以*通配符开始的字符串：

server {
     listen       80;
     server_name  *.domain.com;
     ...
}

3、以*通配符结束的字符串：

server {
     listen       80;
     server_name  www.*;
     ...
}

4、匹配正则表达式：

server {
     listen       80;
     server_name  ~^(?.+)\.domain\.com$;
     ...
}

nginx将按照1,2,3,4的顺序对server name进行匹配，只有有一项匹配以后就会停止搜索，所以我们在使用这个指令的时候一定要分清楚它的匹配顺序（类似于location指令）。
server_name指令一项很实用的功能便是可以在使用正则表达式的捕获功能，这样可以尽量精简配置文件，毕竟太长的配置文件日常维护也很不方便。下面是2个具体的应用：
1、在一个server块中配置多个站点：

server
   {
     listen       80;
     server_name  ~^(www\.)?(.+)$;
     index index.php index.html;
     root  /data/wwwsite/$2;
   }

站点的主目录应该类似于这样的结构：

/data/wwwsite/domain.com
/data/wwwsite/nginx.org
/data/wwwsite/baidu.com
/data/wwwsite/google.com

 

这样就可以只使用一个server块来完成多个站点的配置。

2、在一个server块中为一个站点配置多个二级域名。

实际网站目录结构中我们通常会为站点的二级域名独立创建一个目录，同样我们可以使用正则的捕获来实现在一个server块中配置多个二级域名：

 

server
   {
     listen       80;
     server_name  ~^(.+)?\.domain\.com$;
     index index.html;
     if ($host = domain.com){
         rewrite ^ http://www.domain.com permanent;
     }
     root  /data/wwwsite/domain.com/$1/;
   }

站点的目录结构应该如下：

/data/wwwsite/domain.com/www/
/data/wwwsite/domain
.com/nginx/

这样访问www.domain.com时root目录为/data/wwwsite/domain.com/www/，nginx.domain.com时为/data/wwwsite/domain.com/nginx/，以此类推。

后面if语句的作用是将domain.com的方位重定向到www.domain.com，这样既解决了网站的主目录访问，又可以增加seo中对www.domain.com的域名权重。
		
		 
		 
		 